A virtual machine (“VM”) is a software simulation of a computer that runs on a host computer, but behaves as if it were a separate, independent, computer. Multiple VMs can be run on a single host computer. OS virtualization is achieved by inserting a layer of software, referred to as the virtualization layer or “hypervisor,” between the OS and the underlying server hardware. The hypervisor is responsible for enabling multiple OS images and their respective applications to share the resources of a single computer, such that each OS image functions as if it has at its disposal all of the resources of the computer, while the hypervisor transparently ensures that the system's resources are properly shared among the different OS images and their applications.
VMs are often advantageously employed in software development, testing, and production environments. In such environments, a VM warehouse may be used to house the VMs that have been created and discovered. When a VM is checked into the VM warehouse, it is brought under version control. Any time modifications are made to a VM, the modified version of the VM can be checked back into the VM warehouse, which assigns the next version number to the VM. When a sufficient number of VM versions have been built and tested and a VM version has been certified for deployment, e.g., in a production environment, the certified version can be designated as a “Gold Master” to be deployed each time an instance of the VM is deployed. The Gold Master designation can be changed at any time.
A VM generally comprises a configuration file and one or more disk or image files. The configuration file contains information needed by the hypervisor to run the VM, as well as information identifying the virtual resources required by the VM. The image files comprise the actual operating system and application files.